﻿using Abp.Dependency;
using Mt.Site.Core.WorkFlows.Design;
using Mt.Site.Core.WorkFlows.Diy.Plugin;
using Mt.Site.Core.WorkFlows.Process;
using Mt.Site.Core.WorkFlows.Process.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Core.WorkFlows.Diy
{
    public interface IWorkFlowPluginManager
    {
        IDisposableDependencyObjectWrapper<WorkFlowPluginFunctionsBase> GetWorkFlowDiyFunction(
          IWorkflowDefinition workflowDefinition, IIocResolver iocResolver);

        IDisposableDependencyObjectWrapper<WorkFlowNodePluginFunctionsBase> GetWorkFlowNodeDiyFunction(
           IWorkflowNodeDefinition workflowNodeDefinition, IIocResolver iocResolver);

        IDisposableDependencyObjectWrapper<IAction> GetAction(string actionName, IIocResolver iocResolver);

        Task<List<WorkFlowActionDto>> GetActionListAsync(IWorkFlowManager workFlowManager);
    }
}
